package com.billing.model.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.billing.model.entity.TOrganization;
import com.billing.model.entity.TUser;
import com.billing.model.entity.TUserBuffer;
import com.billing.model.entity.TUserList;

public interface UserBeanMapper {
	/**
	 * 获取档案列表信息
	 * @param name 员工名称
	 * @param dept 部门名称
	 * @param starttime 起始时间
	 * @param endtime 结束时间
	 * @param currentPage 
	 * @param pageSize
	 * @return
	 */
	public List<TUser> selectTUserList(@Param("name")String name,@Param("dept")String dept,
			@Param("starttime")Long starttime,@Param("endtime")Long endtime,@Param("jobnumber")String jobnumber,
			@Param("organizationid")int organizationid,@Param("currentPage")int currentPage,@Param("pageSize")int pageSize);
	/**
	 * APP获取所有用户列表信息
	 * @return
	 */
	public List<TUser> getAllUserListByApp(@Param("orgid")int orgid,@Param("userid")String userid);
	/**
	 * 获取档案列表条数信息
	 * @param name 员工名称
	 * @param dept 部门名称
	 * @param starttime 起始时间
	 * @param endtime 结束时间
	 * @param currentPage 
	 * @param pageSize
	 * @return
	 */
	public int selectTUserNum(@Param("name")String name,@Param("dept")String dept,
			@Param("starttime")Long starttime,@Param("endtime")Long endtime,@Param("jobnumber")String jobnumber,
			@Param("organizationid")int organizationid);
	/**
	 * APP获取所有用户列表信息
	 * @return
	 */
	public int getAllUserListByAppNum();
	/**
	 * 根据ID获取信息
	 * @param name
	 * @return
	 */
	public TUser selectTUserId(@Param("id")String id);
	/**
	 * 根据ID获取信息
	 * @param id
	 * @return
	 */
	public TUser getTUserById(@Param("id")String id);
	/**
	 * 修改个人档案信息
	 * @param attendance
	 * @return
	 */
	public int updateTUser(TUser user);
	/**
	 * 新增员工信息
	 * @param user
	 * @return
	 */
	public int insertTUser(TUser user);
	
	public int insertTUserList(TUserList user);
	
	/**
	 * 根据ID删除员工信息
	 * @param id
	 * @return
	 */
	public int deleteTUser(@Param("id")int id);
	/**
	 * 登陆验证获取用信息
	 * @param loginname
	 * @param password
	 * @return
	 */
	public TUser getTUser(@Param("loginname")String loginname,@Param("password")String password);
	
	/**
	 * 根据ID获取信息
	 * @param name
	 * @return
	 */
	public TUser selectTUserPayId(@Param("id")String id);
	/**
	 * 根据ID获取信息
	 * @param id
	 * @return
	 */
	public TUser getTSubsidyById(@Param("id")String id);
	/**
	 * 根据公司id,手机号码统计数量
	 * @param mobile
	 * @param orgid
	 * @return
	 */
	public int countMobileOnOrgid(@Param("mobile")String mobile,@Param("orgid")String orgid,@Param("userid")String userid);
	/**
	 * 根据公司id,手机号码统计没有存档的数量
	 * @param mobile
	 * @param orgid
	 * @return
	 */
	public int countMobileNotArchiving(@Param("mobile")String mobile,@Param("orgid")String orgid);
	
	/**
	 * 根据公司id,身份证号码统计数量
	 * @param mobile
	 * @param orgid
	 * @return
	 */
	public int countIdcardOnOrgid(@Param("idcard")String idcard,@Param("orgid")String orgid,@Param("userid")String userid);
	/**
	 * 根据公司id,身份证号码统计没有存档的数量
	 * @param mobile
	 * @param orgid
	 * @return
	 */
	public int countIdcardNotArchiving(@Param("idcard")String idcard,@Param("orgid")String orgid);
	/**
	 * 获取档案列表信息
	 * @param currentPage 
	 * @param pageSize
	 * @return
	 */
	public List<TUser> selectTUserLoginnameList(@Param("loginname")String loginname,@Param("organizationid")int organizationid,
			@Param("currentPage")int currentPage,@Param("pageSize")int pageSize);
	/**
	 * 获取档案列表条数信息
	 * @param currentPage 
	 * @param pageSize
	 * @return
	 */
	public int selectTUserLoginnameNum(@Param("loginname")String loginname,@Param("organizationid")int organizationid);
	/**
	 * 根据用户修改资料审核状态
	 * @param userId
	 * @param examineStatus
	 * @return
	 */
	public int updateExamineStatus(@Param("userId")String userId,@Param("examineStatus")String examineStatus);
	/**
	 * 根据用户修改工作状态
	 * @param userId
	 * @param jobStatus
	 * @return
	 */
	public int updateJobStatus(@Param("userId")String userId,@Param("jobStatus")String jobStatus);
	/**
	 * 根据镜像表修改用户基本信息
	 * @param userBuffer
	 * @return
	 */
	public int updateByBuffer(TUserBuffer userBuffer);
	/**
	 * 根据id在离职的时候更新员工的归档时间
	 * @param id
	 * @param atime时间戳
	 */
	public int updateArchivingTime(@Param("id")String id, @Param("atime")long atime);
	/**
	 * 修改密码
	 * @param password
	 * @return
	 */
	public int updatePassword(@Param("newPassword")String newPassword,@Param("oldPassword")String oldPassword);
	/**
	 * 获取用户信息
	 * @param mobile
	 * @param organizationid
	 * @return
	 */
	public TUser getUserList(@Param("customaryOrganizationid")String customaryOrganizationid,@Param("userid")String userid);
	/**
	 * 获取当前用户的公司列表
	 * @param userid
	 * @return
	 */
	public List<TOrganization> getOrganization(String userid);

	public TUser getPhoneNumber(@Param("mobile")String mobile);
	
	public int updatearchivingtime(@Param("mobile")String mobile);
}
